Funciones

Como en cualquier otro lenguaje, en Python también es posible definir funciones, es decir, secuencias de enunciados que reciben ciertos datos, ejecutan algunas operaciones sobre ellos y devuelven un resultado.

Para definir una función se usa la palabra clave def, y el valor que va a retornar siempre debe ser precedido por un return. La sintaxis de una función es como se ve a continuación::

def NOMBRE(LISTA DE ARGUMENTOS):
    ENUNCIADOS
    return VALOR

ó

def NOMBRE(LISTA DE ARGUMENTOS):
    ENUNCIADOS
    print(VALOR)

La línea que contiene el return (o print) es opcional, pues no todas las funciones deben retornar algo. Por ejemplo, hay algunas que sólo modifican los valores de ciertas variables, por lo que no necesitan retornar o imprimir ningún valor.

Nota:

Es muy importante tener en cuenta que los enunciados que hacen parte de la función deben estar cuatro espacios por dentro del encabezado. En otras palabras, todo lo que esté indentado con cuatro espacios por dentro de la definición, pertenece al cuerpo de la función, ya que en Python la indentación es lo único que define la forma en que se agrupa el código. Sólo cuando el nivel de indentación se retorne al punto en que se escribió el primer def se considera que ha terminado la definición de la función.

Un ejemplo muy sencillo de una función que toma un argumento x y retorna este argumento elevado al cuadrado es:


In [ ]:
def cuadrado(x):
    print("El cuadrado de ",x," es:",x**2)
    return x**2

Podemos comprobar que la función esta operando correctamente al pasarle varios argumentos y ver los resultados que retorna:


In [ ]:
cuadrado(3)

In [ ]:
cuadrado(5)

In [ ]:
cuadrado(10)

In [ ]:
cuadrado('a')

En el último caso vemos que si intentamos pasarle a la función un argumento que no puede ser procesado, Python simplemente retorna un error.

Problemas

Problema 1

Definir una función imprimir_doble que tome un argumento x y lo imprima dos veces, con un espacio entre una palabra y la siguiente. Por ejemplo, al evaluarla debe retornar:

imprimir_doble(5)
5 5
imprimir_doble('hola')
hola hola
imprimir_doble([3,9,4])
[3,9,4] [3,9,4]

In [ ]:
# Escribir la solución aquí

In [ ]:
# Evaluar la función aquí

Problema 2

Definir una función distancia que tome dos argumentos x,y, que sean listas de dos elementos, y calcule la distancia entre ellos usando el teorema de Pitágoras:

$$\sqrt{\left(x_{1}-y_{1}\right)^{2}+\left(x_{2}-y_{2}\right)^{2}}$$

Pueden comprobar que la función está haciendo su trabajo correctamente si retorna estos valores:

distancia([0,0], [1,1])
1.4142135623730951
distancia([1,5], [2,2])
3.1622776601683795

In [ ]:
# Escribir la solución aquí

In [ ]:
# Evaluar la función

Problema 3

Definir una función digitos que tome un numero x y retorne los dígitos de que se compone, como cadenas. Por ejemplo, digitos debe retornar:

digitos(1234)
['1', '2', '3', '4']
digitos(99861)
['9', '9', '8', '6', '1']

Nota: Utilizar los comandos de conversión entre tipos de datos, vistos al final de la sección anterior


In [ ]:
# Escribir la solución aquí

In [ ]:
# Evaluar la función aquí

El material de este notebook fue recopilado para Clubes de Ciencia Colombia 2017 por Luis Henry Quiroga (GitHub: lhquirogan) - Germán Chaparro (GitHub: saint-germain), y fue adaptado de https://github.com/PythonBootcampUniandes